package com.bit.cfdi.web.validators.perfil;

import org.zkoss.bind.ValidationContext;
import org.zkoss.bind.validator.AbstractValidator;

import com.bit.cfdi.web.constants.CFDIConstants;

public class NewPasswordValidator extends AbstractValidator {
	
	private String passwordFieldName;
	
	public NewPasswordValidator(final String passwordFieldName) {
		this.passwordFieldName = passwordFieldName;
	}

	@Override
	public void validate(ValidationContext ctx) {
		String passwordToValidate = (String) ctx.getProperties(
				passwordFieldName)[0].getValue();
		if(passwordToValidate == null || passwordToValidate.trim().isEmpty()) {
			return;
		}
		if(!passwordToValidate.matches(CFDIConstants.PASSWORD_EXPRESSION)) {
			addInvalidMessage(ctx, passwordFieldName, 
					"El password es inseguro, mínimo debe tener:\n" +
					"1) de 6 a 20 dígitos\n" +
					"2) Altas y bajas\n" +
					"3) Números\n" +
					"4) Aguno de estos caracteres especiales @ # $ % ");
		}
	}

}
